﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;

namespace QLNhaSach
{
    class DataService
    {
        public string strConnect = ConfigurationManager.ConnectionStrings["connect1"].ConnectionString;
        public SqlConnection Connect;


        public DataService(){}

        public DataService(string strconnect)
        {
            strConnect = strconnect;
        }
        public bool Open()
        {
            //string cwd = System.Reflection.Assembly.GetExecutingAssembly().Location;
            //string projectName = "QLNhaSach";
            //string solutionPath = cwd.Replace("bin\\Release\\DataAccessLayer.dll", "") + "\\connectionString.txt";
            //string text = System.IO.File.ReadAllText(solutionPath);
            //strConnect = text;
            try
            {
                // Khởi động connection
                Connect = new SqlConnection(strConnect);
                Connect.Open();
            }
            catch
            {
                return false;
            }
            return true;

        }
        public void Close()
        {
            if (Connect != null)
            {
                if (Connect.State == ConnectionState.Open)
                    Connect.Close();
            }
        }
        //tạo hàm trả về datatable bằng một lệnh truy vấn
        public DataTable GetTable(string sql)
        {   
            DataTable dt = null;
            try
            {
                // Khởi động connection
                this.Open();
                SqlDataAdapter cmd = new SqlDataAdapter(sql, Connect);
                dt = new DataTable();
                cmd.Fill(dt);
                this.Close();
                return dt;
            }
            catch
            {
                this.Close();
                return dt;
            }

        }
        public DataSet GetDataSet(string sql)
        {
            DataSet ds = null;
            try
            {
                // Khởi động connection
                this.Open();
                SqlDataAdapter cmd = new SqlDataAdapter(sql, Connect);
                ds = new DataSet();
                cmd.Fill(ds);
                this.Close();
                return ds;
            }
            catch
            {
                this.Close();
                return ds;
            }

        }
        //tạo một hàm thực thi không trả về kết quả
        public void ExcuteNonQuery(string sql)
        {
            try
            {
                // Khởi động connection
                this.Open();
                SqlCommand cmd = new SqlCommand(sql, Connect);
                cmd.ExecuteNonQuery();//không trả về kết quả
                this.Close();
            }
            catch
            {
                this.Close();
            }
        }
        //tạo một hàm thực thi trả về kết quả
        public Object ExcuteQuery(string sql)
        {
            Object obj = null;
            try
            {
                // Khởi động connection
                this.Open();
                SqlCommand adapter = new SqlCommand(sql, Connect);
                obj = adapter.ExecuteScalar();
                this.Close();
                return obj;
            }
            catch
            {
                this.Close();
                return obj;
            }
        }
        //tạo một hàm thực thi trả về kết quả dạng Reader
        public SqlDataReader ExcuteDataReader(string sql)
        {   SqlDataReader reader = null;
            try
            {
                // Khởi động connection
                this.Open();
                SqlCommand cmd = new SqlCommand(sql, Connect);
                reader = cmd.ExecuteReader();
                return reader;
            }
            catch
            {
                this.Close();
                return reader;
            }
        }
        //tạo một hàm thực thi update dữ liệu
        public void ExcuteUpdate(string sql)
        {
            try
            {
                // Khởi động connection
                this.Open();
                SqlDataAdapter cmd = new SqlDataAdapter(sql, Connect);
                cmd.UpdateCommand = Connect.CreateCommand();
                cmd.UpdateCommand.CommandText = sql;
                cmd.UpdateCommand.ExecuteNonQuery();
                this.Close();
            }
            catch
            {
                this.Close();
            }
        }
        //tạo một hàm thực thi ghi dữ liệu
        public int ExcuteInsert(string sql)
        {
            int kq = 0;
            try
            {
                // Khởi động connection
                this.Open();
                SqlCommand cmd = new SqlCommand(sql, Connect);
                cmd.CommandText = sql;
                kq = cmd.ExecuteNonQuery();
                this.Close();
            }
            catch
            {
                this.Close();
            }
            return kq;
        }
    }
}
